home *** CD-ROM | disk | FTP | other *** search
- /*
- * @(#) help.c 12.1 95/05/09 SCOINC
- */
- /***************************************************************************
- *
- * Copyright (c) 1990-1993 The Santa Cruz Operation, Inc.
- *
- * All rights reserved. No part of this program or publication may be
- * reproduced, transmitted, transcribed, stored in a retrieval system,
- * or translated into any language or computer language, in any form or
- * by any means, electronic, mechanical, magnetic, optical, chemical,
- * biological, or otherwise, without the prior written permission of:
- *
- * The Santa Cruz Operation , Inc. (408) 425-7222
- * 400 Encinal St., Santa Cruz, California 95060 USA
- *
- **************************************************************************/
- /*
- * SCCS Stuff
- *
- * @(#) help.c 12.1 95/05/09 SCOINC
- *
- * Modification History
- *
- * S003, 15-Sep-93, rickra
- * Delete the proper widget instead of the pull down widget that
- * activated the help window.....
- *
- * S002, 25-May-93, rickra
- * Now delete help windows instead of just unmanaging them.
- *
- * S001, 01-Jan-93, rickra
- * Changed the default width and height.
- * Added Font changing capability.
- *
- * S000, 30-Sep-92, rickra
- * Added copyright and modification history
- */
- #include <X11/Xlib.h>
- #include <X11/Xutil.h>
- #include <X11/Intrinsic.h>
- #include <X11/Shell.h>
- #include <X11/StringDefs.h>
- #include <Xm/Xm.h>
- #include <Xm/MainW.h>
- #include <Xm/DrawingA.h>
- #include <Xm/PanedW.h>
- #include <Xm/Text.h>
- #include <Xm/List.h>
- #include <Xm/PushB.h>
- #include <Xm/Form.h>
- #include <Xm/ToggleB.h>
- #include <Xm/Label.h>
- #include <Xm/RowColumn.h>
- #include <Xm/MessageB.h>
- #include <Xm/DialogS.h>
- #include <Xm/Protocols.h>
- #include <string.h>
- #include <stdio.h>
- #include <ctype.h>
-
- #include "include/unixincs.h"
- #include "include/menus.h"
- #include "include/help.h"
- #include "include/buttons.h"
- #include "include/xsw.h"
- extern struct NetworkXswStruct *current_server;
-
- extern Widget sub_menu_state_list[Max_sub_menu_buttons];
-
- extern Display *display;
- XFontStruct *Current_Font;
-
- XmFontList Font_List;
-
- char *my_help_general;
- char *my_help_options;
- char *my_help_problems;
- Widget general_help_widget;
- Widget general_help_dialog;
-
- Widget options_help_widget;
- Widget options_help_dialog;
-
- Widget known_help_widget;
- Widget known_help_dialog;
-
- Atom general_help_atom;
- Atom options_help_atom;
- Atom known_help_atom;
-
-
- void
- pop_down_general_help (w, client_data, call_data)
-
- Widget w;
- caddr_t client_data;
- XmAnyCallbackStruct *call_data;
- {
-
- Arg wargs[5];
- int argcount;
-
-
- XtDestroyWidget (general_help_dialog);
-
- free (my_help_general);
-
- argcount = 0;
- XtSetArg (wargs[argcount], XmNsensitive, True);
- argcount++;
- XtSetArg (wargs[argcount], XmNset, False);
- argcount++;
- XtSetValues (sub_menu_state_list[BUTTON_general_help], wargs,
- argcount);
-
-
- }
-
- void
- pop_down_options_help (w, client_data, call_data)
-
- Widget w;
- caddr_t client_data;
- XmAnyCallbackStruct *call_data;
- {
-
- Arg wargs[5];
- int argcount;
-
- XtDestroyWidget (options_help_dialog);
-
- free (my_help_options);
-
- argcount = 0;
- XtSetArg (wargs[argcount], XmNsensitive, True);
- argcount++;
- XtSetArg (wargs[argcount], XmNset, False);
- argcount++;
- XtSetValues (sub_menu_state_list[BUTTON_options_help], wargs,
- argcount);
-
- }
-
- void
- pop_down_problems_help (w, client_data, call_data)
-
- Widget w;
- caddr_t client_data;
- XmAnyCallbackStruct *call_data;
- {
-
- Arg wargs[5];
- int argcount;
-
-
-
- XtDestroyWidget (known_help_dialog);
- free (my_help_problems);
-
- argcount = 0;
- XtSetArg (wargs[argcount], XmNsensitive, True);
- argcount++;
- XtSetArg (wargs[argcount], XmNset, False);
- argcount++;
- XtSetValues (sub_menu_state_list[BUTTON_known_help], wargs,
- argcount);
-
- }
-
-
-
- void
- help_general (w, str, call_data)
- Widget w;
- char *str[];
- caddr_t call_data;
- {
-
-
- int j, i, n;
- Widget label;
- Widget pop_down_button;
- Arg wargs[20];
- int argcount;
- XmString xmstr;
- XmString xm_string;
- int done = 0;
- int size = 0;
-
- argcount = 0;
- XtSetArg (wargs[argcount], XmNsensitive, False);
- argcount++;
- XtSetValues (sub_menu_state_list[BUTTON_general_help], wargs,
- argcount);
-
-
- i = 0;
- while (!done)
- {
-
- if (strncmp (help_string_general[i], "ALLDONE", 7) == 0)
- done = 1;
- else
- {
- size += strlen (help_string_general[i]) + 1;
- i++;
- }
-
- }
-
- my_help_general = (char *) malloc (size);
- my_help_general[0] = '\0';
-
-
- for (j = 0; j < i; j++)
- {
- my_help_general = strcat (my_help_general, help_string_general[j]);
- }
-
-
- xm_string = XmStringLtoRCreate ("General Help",
- XmSTRING_DEFAULT_CHARSET);
-
- n = 0;
- XtSetArg (wargs[n], XmNautoUnmanage, FALSE);
- n++;
- XtSetArg (wargs[n], XmNdialogTitle, xm_string);
- n++;
- XtSetArg (wargs[n], XmNwidth, 8 * 80);
- n++;
- XtSetArg (wargs[n], XmNminWidth, 8 * 80);
- n++;
- XtSetArg (wargs[n], XmNmaxWidth, 8 * 80);
- n++;
- XtSetArg (wargs[n], XmNheight, 300);
- n++;
- XtSetArg (wargs[n], XmNdeleteResponse, XmDESTROY);
- n++;
- general_help_dialog = XmCreateFormDialog (w, "GeneralHelp", wargs, n);
-
- n = 0;
- XtSetArg (wargs[n], XmNleftAttachment, XmATTACH_FORM);
- n++;
- XtSetArg (wargs[n], XmNrightAttachment, XmATTACH_FORM);
- n++;
- XtSetArg (wargs[n], XmNbottomAttachment, XmATTACH_FORM);
- n++;
- XtSetArg (wargs[n], XmNwidth, 8 * 80);
- n++;
- pop_down_button = XtCreateWidget ("DONE",
- xmPushButtonWidgetClass,
- general_help_dialog,
- wargs,
- n);
-
- Current_Font = XLoadQueryFont (display, current_server -> font_name);
- Font_List = XmFontListCreate (Current_Font, XmSTRING_DEFAULT_CHARSET);
-
- n = 0;
-
- XtSetArg (wargs[n], XmNfontList, Font_List);
- n++;
- XtSetArg (wargs[n], XmNrows, 20);
- n++;
- XtSetArg (wargs[n], XmNscrollingPolicy, XmAPPLICATION_DEFINED);
- n++;
- XtSetArg (wargs[n], XmNscrollVertical, True);
- n++;
- XtSetArg (wargs[n], XmNscrollHorizontal, False);
- n++;
- XtSetArg (wargs[n], XmNeditMode, XmMULTI_LINE_EDIT);
- n++;
- XtSetArg (wargs[n], XmNeditable, FALSE);
- n++;
- XtSetArg (wargs[n], XmNvalue, my_help_general);
- n++;
- XtSetArg (wargs[n], XmNwidth, 8 * 80);
- n++;
- XtSetArg (wargs[n], XmNbottomAttachment, XmATTACH_WIDGET);
- n++;
- XtSetArg (wargs[n], XmNbottomWidget, pop_down_button);
- n++;
- XtSetArg (wargs[n], XmNtopAttachment, XmATTACH_FORM);
- n++;
- XtSetArg (wargs[n], XmNleftAttachment, XmATTACH_FORM);
- n++;
- XtSetArg (wargs[n], XmNrightAttachment, XmATTACH_FORM);
- n++;
- general_help_widget = XmCreateScrolledText (general_help_dialog,
- "Text1", wargs, n);
-
-
-
- general_help_atom = XmInternAtom (XtDisplay (general_help_widget),
- "WM_DELETE_WINDOW",
- False);
-
- XmAddWMProtocolCallback (XtParent (general_help_dialog),
- general_help_atom,
- pop_down_general_help,
- NULL);
-
-
- XtAddCallback (pop_down_button, XmNactivateCallback,
- pop_down_general_help,
- NULL);
-
- XtManageChild (pop_down_button);
- XtManageChild (general_help_widget);
- XtManageChild (general_help_dialog);
-
- }
-
-
- void
- help_options (w, str, call_data)
- Widget w;
- char *str[];
- caddr_t call_data;
- {
-
-
- int j, i, n;
- Widget label;
- Widget pop_down_button;
- Arg wargs[20];
- int argcount;
- XmString xmstr;
- XmString xm_string;
- int done = 0;
-
-
- argcount = 0;
- XtSetArg (wargs[argcount], XmNsensitive, False);
- argcount++;
- XtSetValues (sub_menu_state_list[BUTTON_options_help], wargs,
- argcount);
-
-
-
- i = 0;
- while (!done)
- {
-
- if (strncmp (help_string_options[i], "ALLDONE", 7) == 0)
- done = 1;
- else
- i++;
-
- }
-
- my_help_options = (char *) malloc (i * 80);
- my_help_options[0] = '\0';
-
-
- for (j = 0; j < i; j++)
- {
- my_help_options = strcat (my_help_options, help_string_options[j]);
- }
-
-
- xm_string = XmStringLtoRCreate ("Options Help",
- XmSTRING_DEFAULT_CHARSET);
-
- n = 0;
- XtSetArg (wargs[n], XmNautoUnmanage, FALSE);
- n++;
- XtSetArg (wargs[n], XmNdialogTitle, xm_string);
- n++;
- XtSetArg (wargs[n], XmNminWidth, 8 * 80);
- n++;
- XtSetArg (wargs[n], XmNmaxWidth, 8 * 80);
- n++;
- XtSetArg (wargs[n], XmNwidth, 8 * 80);
- n++;
- XtSetArg (wargs[n], XmNheight, 300);
- n++;
- XtSetArg (wargs[n], XmNdeleteResponse, XmDESTROY);
- n++;
- options_help_dialog = XmCreateFormDialog (w, "OptionsHelp", wargs, n);
-
- n = 0;
- XtSetArg (wargs[n], XmNleftAttachment, XmATTACH_FORM);
- n++;
- XtSetArg (wargs[n], XmNrightAttachment, XmATTACH_FORM);
- n++;
- XtSetArg (wargs[n], XmNbottomAttachment, XmATTACH_FORM);
- n++;
- XtSetArg (wargs[n], XmNwidth, 8 * 80);
- n++;
- pop_down_button = XtCreateWidget ("DONE",
- xmPushButtonWidgetClass,
- options_help_dialog,
- wargs,
- n);
-
- Current_Font = XLoadQueryFont (display, current_server -> font_name);
-
- Font_List = XmFontListCreate (Current_Font, XmSTRING_DEFAULT_CHARSET);
-
- n = 0;
- XtSetArg (wargs[n], XmNfontList, Font_List);
- n++;
- XtSetArg (wargs[n], XmNrows, 20);
- n++;
- XtSetArg (wargs[n], XmNscrollingPolicy, XmAPPLICATION_DEFINED);
- n++;
- XtSetArg (wargs[n], XmNscrollVertical, True);
- n++;
- XtSetArg (wargs[n], XmNscrollHorizontal, False);
- n++;
- XtSetArg (wargs[n], XmNeditMode, XmMULTI_LINE_EDIT);
- n++;
- XtSetArg (wargs[n], XmNeditable, FALSE);
- n++;
- XtSetArg (wargs[n], XmNvalue, my_help_options);
- n++;
- XtSetArg (wargs[n], XmNwidth, 8 * 80);
- n++;
- XtSetArg (wargs[n], XmNbottomAttachment, XmATTACH_WIDGET);
- n++;
- XtSetArg (wargs[n], XmNbottomWidget, pop_down_button);
- n++;
- XtSetArg (wargs[n], XmNtopAttachment, XmATTACH_FORM);
- n++;
- XtSetArg (wargs[n], XmNleftAttachment, XmATTACH_FORM);
- n++;
- XtSetArg (wargs[n], XmNrightAttachment, XmATTACH_FORM);
- n++;
- options_help_widget = XmCreateScrolledText (options_help_dialog,
- "Text1", wargs, n);
-
- options_help_atom = XmInternAtom (XtDisplay (options_help_widget),
- "WM_DELETE_WINDOW",
- False);
-
- XmAddWMProtocolCallback (XtParent (options_help_dialog),
- options_help_atom,
- pop_down_options_help,
- NULL);
-
- XtAddCallback (pop_down_button, XmNactivateCallback,
- pop_down_options_help,
- NULL);
-
- XtManageChild (pop_down_button);
- XtManageChild (options_help_widget);
- XtManageChild (options_help_dialog);
-
- }
-
- void
- help_problems (w, str, call_data)
- Widget w;
- char *str[];
- caddr_t call_data;
- {
-
-
- int j, i, n;
- Widget label;
- Widget pop_down_button;
- Arg wargs[20];
- int argcount;
- XmString xmstr;
- XmString xm_string;
- int done = 0;
-
-
- argcount = 0;
- XtSetArg (wargs[argcount], XmNsensitive, False);
- argcount++;
- XtSetValues (sub_menu_state_list[BUTTON_known_help], wargs,
- argcount);
-
- i = 0;
- while (!done)
- {
-
- if (strncmp (help_string_problems[i], "ALLDONE", 7) == 0)
- done = 1;
- else
- i++;
-
- }
-
- my_help_problems = (char *) malloc (i * 80);
- my_help_problems[0] = '\0';
-
-
- for (j = 0; j < i; j++)
- {
- my_help_problems = strcat (my_help_problems, help_string_problems[j]);
- }
-
-
- xm_string = XmStringLtoRCreate ("HELP",
- XmSTRING_DEFAULT_CHARSET);
-
- n = 0;
- XtSetArg (wargs[n], XmNautoUnmanage, FALSE);
- n++;
- XtSetArg (wargs[n], XmNdialogTitle, xm_string);
- n++;
- XtSetArg (wargs[n], XmNminWidth, 8 * 80);
- n++;
- XtSetArg (wargs[n], XmNmaxWidth, 8 * 80);
- n++;
- XtSetArg (wargs[n], XmNwidth, 8 * 80);
- n++;
- XtSetArg (wargs[n], XmNheight, 300);
- n++;
- XtSetArg (wargs[n], XmNdeleteResponse, XmDESTROY);
- n++;
- known_help_dialog = XmCreateFormDialog (w, "Help", wargs, n);
-
- n = 0;
- XtSetArg (wargs[n], XmNleftAttachment, XmATTACH_FORM);
- n++;
- XtSetArg (wargs[n], XmNrightAttachment, XmATTACH_FORM);
- n++;
- XtSetArg (wargs[n], XmNbottomAttachment, XmATTACH_FORM);
- n++;
- XtSetArg (wargs[n], XmNwidth, 8 * 80);
- n++;
- pop_down_button = XtCreateWidget ("DONE",
- xmPushButtonWidgetClass,
- known_help_dialog,
- wargs,
- n);
-
- Current_Font = XLoadQueryFont (display, current_server -> font_name);
-
- Font_List = XmFontListCreate (Current_Font, XmSTRING_DEFAULT_CHARSET);
-
- n = 0;
- XtSetArg (wargs[n], XmNfontList, Font_List);
- n++;
- XtSetArg (wargs[n], XmNrows, 20);
- n++;
- XtSetArg (wargs[n], XmNscrollingPolicy, XmAPPLICATION_DEFINED);
- n++;
- XtSetArg (wargs[n], XmNscrollVertical, True);
- n++;
- XtSetArg (wargs[n], XmNscrollHorizontal, False);
- n++;
- XtSetArg (wargs[n], XmNeditMode, XmMULTI_LINE_EDIT);
- n++;
- XtSetArg (wargs[n], XmNeditable, FALSE);
- n++;
- XtSetArg (wargs[n], XmNvalue, my_help_problems);
- n++;
- XtSetArg (wargs[n], XmNwidth, 8 * 80);
- n++;
- XtSetArg (wargs[n], XmNbottomAttachment, XmATTACH_WIDGET);
- n++;
- XtSetArg (wargs[n], XmNbottomWidget, pop_down_button);
- n++;
- XtSetArg (wargs[n], XmNtopAttachment, XmATTACH_FORM);
- n++;
- XtSetArg (wargs[n], XmNleftAttachment, XmATTACH_FORM);
- n++;
- XtSetArg (wargs[n], XmNrightAttachment, XmATTACH_FORM);
- n++;
- known_help_widget = XmCreateScrolledText (known_help_dialog,
- "Text1", wargs, n);
-
- known_help_atom = XmInternAtom (XtDisplay (known_help_widget),
- "WM_DELETE_WINDOW",
- False);
-
- XmAddWMProtocolCallback (XtParent (known_help_dialog),
- known_help_atom,
- pop_down_problems_help,
- NULL);
-
- XtAddCallback (pop_down_button, XmNactivateCallback,
- pop_down_problems_help,
- NULL);
-
- XtManageChild (pop_down_button);
- XtManageChild (known_help_widget);
- XtManageChild (known_help_dialog);
-
- }
-